#include "hdl_led.h"

int8_t hdl_SetIOGledStatus(BOOL bStatus)
{
    if(bStatus)
    {
        GPIO_ResetBits(LED_GPIO_PORT, LED_GREEN);
    }
    else
    {
        GPIO_SetBits(LED_GPIO_PORT, LED_GREEN);
    }
    return SUCCESS;
}

BOOL hdl_GetIOGledStatus(void)
{
    return (BOOL)GPIO_ReadOutputDataBit(LED_GPIO_PORT, LED_GREEN);
}

void hdl_SetIOGledToogle(void)
{
    (hdl_GetIOGledStatus() == TRUE)?hdl_SetIOGledStatus(TRUE):hdl_SetIOGledStatus(FALSE);
}

int8_t hdl_SetIORledStatus(BOOL bStatus)
{
    if(bStatus)
    {
        GPIO_ResetBits(LED_GPIO_PORT, LED_RED);
    }
    else
    {
        GPIO_SetBits(LED_GPIO_PORT, LED_RED);
    }
    return SUCCESS;
}

BOOL hdl_GetIORledStatus(void)
{
    return (BOOL)GPIO_ReadOutputDataBit(LED_GPIO_PORT, LED_RED);
}

void hdl_SetIORledToogle(void)
{
    (hdl_GetIORledStatus() == TRUE)?hdl_SetIORledStatus(TRUE):hdl_SetIORledStatus(FALSE);
}

int8_t hdl_led_init(void)
{
    int8_t ret = SUCCESS;
    GPIO_InitTypeDef    GPIOInitStructre;

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOF,ENABLE);
    GPIOInitStructre.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIOInitStructre.GPIO_Speed = GPIO_Speed_50MHz;
    GPIOInitStructre.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9;
    GPIO_Init(GPIOF, &GPIOInitStructre);

    GPIO_SetBits(GPIOF,GPIO_Pin_6);
    GPIO_SetBits(GPIOF,GPIO_Pin_7);
    GPIO_SetBits(GPIOF,GPIO_Pin_8);
    GPIO_SetBits(GPIOF,GPIO_Pin_9);
    return ret;
}

struct hal_led_if g_hdl_led_if =
{
    .led_init = hdl_led_init,
    .led_red_onoff = hdl_SetIORledStatus,
    .led_green_onoff = hdl_SetIOGledStatus,
};

